[실기] 공부법 & 요약집
NOTE
정보처리기사 실기 공부법(강의·암기 팁)과 단원별 요약 자료 모음.
공부법
-
알고리즘 ( 유튜브 강의) -중요
-
데이터베이스 (유튜브 강의) -중요
-
업무프로세스, 신기술 동향, 전산영어 ⇒ 퀴즐렛으로 암기
요약
1. 소프트웨어 설계 및 개발 방법론
개발 방법론
- 구조적 방법론: 기능을 분할하여 개발. (도구: 나씨-슈나이더만 차트 - 도형식, 제어 논리 구조 표현)
- 애자일(Agile) 방법론: 사람 중심, 변화에 유연함.
- XP (eXtreme Programming): 메타포어(공통 이름 체계), 리팩토링, 짝 프로그래밍.
- Scrum: 매일 정해진 시간 짧은 회의, 스프린트(반복 주기).
- Lean: 도요타 생산 방식(JIT)을 적용, 낭비 제거.
- 비용 산정 모델
- 하향식: 델파이 기법 (전문가 합의).
- 상향식: COCOMO (유형: Organic, Semi-detached, Embedded).
- 일정 관리
- CPM (주공정법): 가장 오래 걸리는 경로(임계 경로) 계산.
- PERT: 3점 추정 (비관치, 중간치, 낙관치) 사용.
객체지향 및 UML
- UML: 객체지향 산출물의 명세화/시각화/문서화 모델링 언어.
- 스테레오 타입:
<< >>(길러멧) 기호 사용.
- 스테레오 타입:
- 객체지향 관계
- 집단화 (Aggregation): is part of (부분)
- 일반화 (Generalization): is a (상속)
- 분류화 (Classification): is instance of
- 연관화 (Association): is member of
- 다형성 (Polymorphism): 각 객체가 고유한 방법으로 응답하는 능력.
객체지향 설계 원칙 (SOLID)
- SRP (단일 책임): 하나의 클래스는 하나의 책임만 가짐.
- OCP (개방-폐쇄): 확장은 열고 수정은 닫음.
- LSP (리스코프 치환): 자식은 부모를 대체 가능해야 함.
- ISP (인터페이스 분리): 불필요한 인터페이스 의존 금지.
- DIP (의존 역전): 구체적인 것이 아닌 추상적인 것에 의존.
디자인 패턴 (GoF)
- 생성 (Creational): 추빌팩프싱 (추상 팩토리, 빌더, 팩토리 메서드, 프로토타입, 싱글톤)
- 구조 (Structural): 어브컴데퍼플프 (어댑터, 브리지, 컴포지트, 데코레이터, 퍼사드, 플라이웨이트, 프록시)
- 행위 (Behavioral): 나머지 (옵저버, 전략, 템플릿 메서드 등)
모듈 품질 (암기 필수)
- 결합도 (Coupling): 낮을수록 좋음.
- 순서 (높음 → 낮음): 내공외제스자 (내용 > 공통 > 외부 > 제어 > 스탬프 > 자료)
- 응집도 (Cohesion): 높을수록 좋음.
- 순서 (낮음 → 높음): 우논시절통순기 (우연 < 논리 < 시간 < 절차 < 통신 < 순차 < 기능)
2. 구현 및 테스트 (Implementation & Test)
공통 모듈 구현
-
절차: DTO/VO → SQL → DAO → Service → Controller → View
-
데이터 객체 구분
DTO (Data Transfer Object): Getter/Setter 보유, 데이터 전송용 (가변).VO (Value Object): Getter만 보유, Read-only (불변).DAO (Data Access Object): DB 접근 인터페이스.
테스트 기법
- V-모델 검증 단계
- 검증 (Verification): 개발자 기준 (“제품을 올바르게 만들고 있는가?”)
- 확인 (Validation): 사용자 기준 (“올바른 제품을 만들었는가?”)
- 화이트박스 테스트 (내부 로직): 기초 경로 검사, 제어 구조 검사(조건, 루프), 분기/조건 검증.
- 블랙박스 테스트 (기능): 동치 분할, 경계값 분석, 원인-효과 그래프, 오류 예측, 비교 검사.
- 통합 테스트
- 하향식: 스텁 (Stub) 사용 (가짜 하위 모듈).
- 상향식: 드라이버 (Driver) 사용 (가짜 상위 모듈).
- 인수 테스트: 알파(개발자 환경, 사용자+개발자), 베타(실제 환경, 사용자 단독).
테스트 이론 및 용어
- 파레토 법칙: 20%의 모듈에서 80%의 오류 발생.
- 살충제 패러독스: 동일한 테스트 반복 시 결함 발견 불가.
- 오류-부재의 궤변: 결함이 없어도 사용자 요구를 만족 못 하면 품질 나쁨.
복잡도
- 시간 복잡도: 빅오(Big-O) 표기법 사용.
- 순환 복잡도 (Cyclomatic Complexity): (화살표 수 - 노드 수 + 2).
형상 관리 및 도구
- CVS: 서버-클라이언트, 동시 접근 가능.
- SVN: 서버-클라이언트, 하나의 서버 소스 관리.
- RCS: 파일 잠금(1인 수정), 동시 접속 불가.
- BitKeeper: 중앙 통제, 대규모 전용.
- Git: 분산형, 속도 중점.
- Clear Case: 복수 서버/클라이언트.
3. 인터페이스 및 연계 (Interface Integration)
연계 기술
- 직접 연계: DB Link, API/Open API, JDBC, 하이퍼링크.
- 간접 연계: EAI, ESB, Socket.
EAI (Enterprise Application Integration)
- 기업 내 앱 통합 솔루션.
- 구성요소: 어댑터, 브로커, 메시지 큐, 비즈니스 워크플로우.
- 구축 유형:
- Point-to-Point: 1:1 연결.
- Hub & Spoke: 중앙 허브 경유.
- Message Bus: 미들웨어 버스 사용.
- Hybrid: 허브 + 버스.
웹 서비스 및 ESB
- ESB (Enterprise Service Bus): 느슨한 결합, 서비스 중심 통합.
- 웹 서비스 3요소:
- SOAP: XML 기반 메시지 교환 프로토콜 (HTTP/HTTPS 등 이용).
- WSDL: 웹 서비스 기술 언어 (명세서).
- UDDI: WSDL 등록/검색 저장소.
인터페이스 구현 기술
- 데이터 포맷:
- JSON: Key-Value 쌍, AJAX에서 주로 사용, XML 대체.
- XML: HTML 단점 보완, 다목적 마크업 언어.
- AJAX: JS 사용, 비동기 데이터 교환.
- REST: HTTP 메서드(POST, GET, PUT, DELETE) 활용.
- 보안:
- IPSec: 네트워크 계층 보안 (AH:인증, ESP:암호화).
- SSL/TLS: 전송 계층 보안, 웹 데이터 암호화.
- S-HTTP: 네트워크 트래픽 암호화.
테스트/감시 도구
- 프레임워크: xUnit, STAF, FitNesse, NTAF, Selenium(웹), Watir(루비).
- APM (모니터링): Scouter, 제니퍼(Jennifer).
4. 운영체제 (OS)
프로세스 관리
- 상태 전이: 제출 → 접수 → 준비(Ready) → 실행(Run/Dispatch) → 대기(Wait) → 종료.
- Wake up: 대기 → 준비.
- Spooling: 입출력 데이터를 디스크에 잠시 저장.
- PCB (Process Control Block): 프로세스 정보를 저장하는 곳.
- 스레싱 (Thrashing): 페이지 교체 시간이 실행 시간보다 많아지는 현상.
스케줄링
-
비선점 (뺏기 불가): FCFS, SJF, HRN.
HRN 우선순위: (대기시간 + 서비스시간) / 서비스시간 (값이 클수록 우선)
-
선점 (뺏기 가능): Round Robin, SRT, 다단계 큐.
페이지 교체 알고리즘
- OPT: 앞으로 가장 오랫동안 사용 안 할 페이지 (이상적).
- FIFO: 먼저 들어온 순서.
- LRU: 가장 오랫동안 사용하지 않은(과거) 페이지.
- LFU: 사용 빈도가 적은 페이지.
- NUR: 최근에 사용하지 않은 페이지 (참조 비트 사용).
- SCR: FIFO 단점 보완 (한 번 더 기회 부여).
교착상태 (Deadlock)
- 4대 조건: 상호배제, 비선점, 환형 대기, 점유와 대기.
- 해결 기법: 예방, 회피(은행원 알고리즘), 발견, 회복.
5. 데이터베이스 (Database)
트랜잭션 및 회복
- 회복 기법
- REDO: 완료된 작업 재수행.
- UNDO: 실패/취소된 작업 원상복구.
- 연기 갱신: 커밋 전까지 기록만 함 (REDO만 가능).
- 즉각 갱신: 즉시 DB 반영 (REDO, UNDO 모두 가능).
- 타임스탬프: 시간표 부여하여 순서대로 수행.
관계 데이터 모델
- 관계 대수:
- Select(): 조건 만족 튜플.
- Project(): 특정 속성 추출.
- Join: 공통 속성 연결.
- Division: 관련 있는 튜플 반환.
- 무결성 제약: Restricted(제한), Cascade(연쇄), Set Null(널값 설정).
데이터베이스 관리
- 파티셔닝: 범위(Range), 해시(Hash), 리스트(List), 컴포지트(Composite).
- DB 암호화: API, Plug-In, TDE(커널 내장), Hybrid.
신기술 및 빅데이터
- 빅데이터: HDFS(하둡 파일 시스템), MapReduce(분산 병렬 처리).
- NoSQL: 스키마 X, 조인 불가, 수평 확장.
- 시맨틱 웹: 온톨로지(지식베이스) 활용, 기계가 처리 가능한 웹.
- 데이터 마이닝: 분류(예측), 연관(종속), 연속(시간+연관), 군집화.
6. 보안 (Security)
공격 유형
- DoS (서비스 거부):
- SYN Flooding, UDP Flooding.
- Smurf: ICMP 브로드캐스트.
- Ping of Death: 거대 패킷 전송.
- Land Attack: 출발지 IP = 목적지 IP.
- Tear Drop: 패킷 재조합 오류 유발.
- Bonk/Boink: 프로토콜 오류 제어.
- DDoS (분산 서비스 거부): Trinoo, TFN, Stacheldraht.
- DRDoS: 반사 서버 이용.
- 애플리케이션 공격:
- HTTP GET Flooding.
- Slowloris / Rudy / Slow HTTP Read DoS (지속적 연결 유지).
- Hulk DoS: URL 지속 변경.
- Hash DoS: 파라미터 다량 전송.
- 네트워크 공격:
- IP Spoofing (IP 위조), ARP Spoofing (MAC 위조).
- ICMP Redirect, 트로이목마, 백도어.
- 기타 용어:
- 스피어피싱(이메일), 큐싱(QR), 봇넷, 웜(자가복제), 악성 봇, 이블 트윈(가짜 핫스팟), 공급망 공격.
보안 구현 및 방어
- 3대 요소: 기밀성, 무결성, 가용성.
- 접근 통제 모델:
- BLP (벨-라파듈라): 기밀성 강조 (No Read Up, No Write Down).
- Biba: 무결성 강조.
- 취약점 방어: XSS, CSRF, SQL Injection.
- 보안 시스템: WIPS(무선 침입 방지), VPN(가상 사설망), UTM(통합 보안), DLP(데이터 유출 방지), DRM(저작권 관리).
- BCP (비즈니스 연속성 계획): 재해 복구 및 업무 재개 계획.